const jvue = {};
//import Auth from '@/libs/wechat';

jvue.hello = function(msg){
	console.log("hello "+msg);
}

jvue.back = function(){
	uni.navigateBack({delta: 1});				
}
jvue.system_share = function(content,href){
	// 使用系统分享发送分享消息 
	plus.share.sendWithSystem({type:'text',content:content,href:href}, function(){
		console.log('分享成功');
	}, function(e){
		console.log('分享失败：'+JSON.stringify(e));
	});

}

jvue.share = function(options,succ){
	if(options.provider==undefined){
		options.provider = "weixin";
	}
	if(options.href==undefined){
		options.href = "https://shop.zdtapp.com/";
	}
	if(options.title==undefined){
		options.title = "值得投-人脉变现 #公众号:值得投什么";
	}
	if(options.summary==undefined){
		options.summary = "#公众号:值得投什么";
	}
	if(options.imageUrl==undefined){
		options.imageUrl = "https://zdt-1256524900.cos.ap-guangzhou.myqcloud.com/7d0e7202402260030259301.png";
	}
	if(options.scene==undefined){
		options.scene = "WXSceneSession";
	}
	
	//#ifdef H5
		jvue.shareh5(options,succ);
	//#endif 
	//#ifdef APP
		jvue.appshare(options,succ);
	//#endif 
}

jvue.shareh5 = function(options,succ){
	
	let configAppMessage = {
		desc: options.desc,
		title: options.title,
		link: options.url,
		imgUrl: options.imageUrl
	};
	Auth.wechatEvevt(["onMenuShareTimeline","onMenuShareAppMessage","updateAppMessageShareData", "updateTimelineShareData"], configAppMessage).then(res=>{
		console.log("==获取分享配置==");
		console.log(res);
		var shareConfig = res.data;
		//onMenuShareAppMessage
		/*
		Auth.getinstance().updateAppMessageShareData({
			title: '', // 分享标题
			desc: '', // 分享描述
			// 该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
			link: options.url,
			imgUrl: options.imageUrl, // 分享图标,只支持https
			success(res) {},
			cancel(res) {}
		});
		*/
		Auth.instance.onMenuShareAppMessage({
			title: '', // 分享标题
			desc: '', // 分享描述
			// 该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
			link: options.url,
			imgUrl: options.imageUrl, // 分享图标,只支持https
			success(res) {
				console.log(res);
			},
			cancel(res) {
				console.log(res);
				
			}
		});
		 /*
		Auth.ready(() => {
		    // 自定义“分享给朋友”及“分享到QQ”按钮的分享内容（1.4.0）
			
			
			// 自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容（1.4.0）
			Auth.updateTimelineShareData({
				title: '', // 分享标题
				desc: '', // 分享描述
				// 该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
				link: options.url,
				imgUrl: options.imageUrl, // 分享图标,只支持https
				success(res) {},
				cancel(res) {}
			})
		});*/
		/*
		Auth.config({
		 	debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
		 	appId: shareConfig.appid, // 必填，公众号的唯一标识
		 	timestamp: shareConfig.time, // 必填，生成签名的时间戳
		 	nonceStr: shareConfig.nonceStr, // 必填，生成签名的随机串
		 	signature: shareConfig.signature, // 必填，签名，见附录1
		 	// surl: res.data.surl, //自己添加的，debug为true的时候可以网页打印出对应的URL是否正确
		 	jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'scanQRCode']})
		 	
		 }).catch(err => {
		 	console.log(err);
		 })
		*/
	});
	
	//getWechatConfig()
	//.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"], configAppMessage);
}

jvue.appshare = function(options,succ){

	uni.share({
		provider: "weixin",
		scene: options.scene, //聊天界面 WXSceneSession 朋友圈：WXSceneTimeline
		type: 0,
		href: options.href,
		title: options.title,
		summary: options.summary,
		imageUrl: options.imageUrl,
		success: function (res) {
			succ(res);
			console.log("success:" + JSON.stringify(res));
		},
		fail: function (err) {
			console.log("fail:" + JSON.stringify(err));
		}
	});

}

jvue.openwebview = function(link, title){	
	if (!link) return
	if (!title) title = config.appName
	if (link.startsWith('/')) {
		uni.navigateTo({
			url: link
		});
	} else {
		uni.navigateTo({
			url: `/pages/index/webview?link=${link}&title=${title}`
		});
	}	
}

jvue.toUrl = function(url,mode){
	if(mode==undefined){
		uni.navigateTo({url: url});
		return ;
	}
	if(mode==''){
		uni.navigateTo({url: url});
	}
	else if(mode=='tab'){
		uni.switchTab({url: url});
	}
	else{
		uni.redirectTo({url: url});
	}
}


jvue.atoUrl = function(url,mode, loading,animationType){
	if(mode==undefined){
		uni.navigateTo({url: url});
		return ;
	}
	if (loading) {
		uni.showLoading();
	}
	if(mode==''){
		uni.navigateTo({
			url: url,
			fail:function(err){
				console.log("访问错误",err);
			},
			complete:function(res){
				console.log("访问成功",res);
				 // 通过eventChannel向被打开页面传送数据
				//res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'data from starter page' })
			},
			animationType:animationType
		});
	}
	else if(mode=='tab'){
		uni.switchTab({url: url});
	}
	else{
		uni.redirectTo({url: url});
	}
}
		
jvue.download = function(url,p_succ){
	var _succ = function(res){
		//let fileSaveUrl = plus.io.convertLocalFileSystemURL(res.tempFilePath);
		console.log(res);
		console.log(res.savedFilePath);
	}
	var succ = _succ;
	if(p_succ==undefined){
		succ = p_succ;
	}
	//文件保存到本地
	uni.saveFile({
		tempFilePath: url, //临时路径
		success: succ,
		fail:function(err) {
			console.log(err);
		}
	});
}

jvue.downopen = function(url,succ){
	uni.downloadFile({
	    url: url,
		success: (res) => {
			if (res.statusCode === 200) {
			    // let fileSaveUrl = plus.io.convertLocalFileSystemURL(res.tempFilePath)
				// plus.runtime.openFile(res.tempFilePath)//选择软件打开文件
				console.log(res);
				//app.showMsg('已保存在相册,位置:'+res.tempFilePath);
				
				uni.openDocument({
					showMenu: true,
					filePath: res.tempFilePath,
					success: function(res) {
						console.log('打开文档成功');
						if(succ!=undefined)succ(res);
					},
			    })
			}
		}
	});
}

jvue.safedownload = function(url,filename,token){
	var _this = this,that = this;
	uni.downloadFile({
		 method: 'GET',
		 url: url,
		 timeout: 20000,
		header:{
		  authorization:token,
		},
		 success: (data) => {
				 if (data.statusCode === 200) {
					 plus.io.resolveLocalFileSystemURL( data.tempFilePath, function( entry ) {
						 const name = filename; //`{entry.name}.pdf` //这里设置文件名根据自己的下载文件后缀来修改，我这边需求是pdf
						 entry.getParent(function(scb) {
							 entry.moveTo(scb,name, function(sEntry) {
								 //文件保存到本地
								uni.saveFile({
										tempFilePath: sEntry.fullPath, //临时路径
										success: function(res) {
												// 判断手机平台是 Android 还是 IOS
												if (uni.getSystemInfoSync().platform === 'android') {
														uni.showModal({
																title:"保存地址为：",
																content: res.savedFilePath,
																duration: 3000,
														})
												} else {
														uni.showModal({
																icon: 'none',
																title: '文件已保存：',
																content: res.savedFilePath,
																duration: 3000,
														});
												}
												
												let list = uni.getStorageSync("__local_down_history");
												if (list.length) {
													let arrNew=list
													let newObj={
														path:res.savedFilePath,
														name:filename, //"收据."+ReceiptNo+'.pdf' 
														//这里的保存的name是下载中心展示的文件名，不是这个文件原本的名字
													}
													arrNew.unshift(newObj);
													_this.localSearchList=arrNew
													// arrUnique(this.localSearchList);
												} else {
													_this.localSearchList = [{
														path:res.savedFilePath,
														name:filename,//"收据."+ReceiptNo+'.pdf'
													}];
												}
												console.log("文件缓存",_this.localSearchList)
												uni.setStorageSync("__local_down_history", _this.localSearchList);        
										}
								});
							 } )
						 })
					 })
						 
				 }
		 },
		 fail: (err) => {
				 console.log(err);
				 uni.showToast({
						 icon: 'none',
						 mask: true,
						 title: '失败请重新下载',
				 });
		 },
	 })
}


jvue.loadFilterWords = function(func){
	var that = this;
	uni.request({
		url: 'https://test.hanyuai.online/api/xinxuan/ajax?cmd=filter',//`https://shop.zdtapp.com/api/huotui/data?cmd=filter`,//
		method: 'GET',
		data:{},
		header: {
		  'content-type': 'application/x-www-form-urlencoded'
		},
		success: res => {
			//console.log("xinxuan",res);
			if(res.statusCode==200){
				//console.log(res.msg);
				func(res);				
			}						
		},
		fail: (err) => {
			console.log('req错误', err);
		}
	});
}


jvue.get_suffix = function (filename) {
	const pos = filename.lastIndexOf('.')
	let suffix = ''
	if (pos != -1) {
		suffix = filename.substring(pos)
	}
	return suffix;
}

jvue.getDate = function(){
	var date = new Date();
	var month = date.getMonth()+1;
	var day = date.getDate();

	if (month >= 1 && month <= 9) {
		month = "0" + month;
	}
	if (day >= 1 && day <= 9) {
		day = "0" + day;
	}
	var d = date.getFullYear() + "-" + month + "-" + day;
	console.log(d);
	return d;
	//return jdk.getDate();
}

jvue.getCurrentTime = function(){
	var date = new Date();
	var hours = date.getHours();          //小时 ,返回 Date 对象的小时 (0 ~ 23)
	var minutes = date.getMinutes();      //分钟 ,返回 Date 对象的分钟 (0 ~ 59)
	var seconds = date.getSeconds();      //秒 ,返回 Date 对象的秒数 (0 ~ 59)   
	//修改小时格式
	if (hours >= 0 && hours <= 9) {
		hours = "0" + hours;
	}			
	//修改分钟格式
	if (minutes >= 0 && minutes <= 9) {
		minutes = "0" + minutes;
	}			
	//修改秒格式
	if (seconds >= 0 && seconds <= 9) {
		seconds = "0" + seconds;
	}
	return hours + ":" + minutes + ":" + seconds;
}

jvue.getNow = function(){
	var date = new Date();						
	var year = date.getFullYear();        //年 ,从 Date 对象以四位数字返回年份
	var month = date.getMonth() + 1;      //月 ,从 Date 对象返回月份 (0 ~ 11) ,date.getMonth()比实际月份少 1 个月
	var day = date.getDate();             //日 ,从 Date 对象返回一个月中的某一天 (1 ~ 31)			
	var hours = date.getHours();          //小时 ,返回 Date 对象的小时 (0 ~ 23)
	var minutes = date.getMinutes();      //分钟 ,返回 Date 对象的分钟 (0 ~ 59)
	var seconds = date.getSeconds();      //秒 ,返回 Date 对象的秒数 (0 ~ 59)   			
	//获取当前系统时间  
	var currentDate = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
	return currentDate;
}

//APP 微信支付
jvue.appWechatPayment = function(jsConfig) {
	return new Promise((resolve, reject) => {
		uni.requestPayment({
			orderInfo: jsConfig,
			provider: 'wxpay',
			success: function(res) {
				resolve(res);
			},
			fail: function(e) {
				reject(e);
			},
			complete: function(e) {
				reject(e);
			}
		});
	});
}
//APP 支付宝支付
jvue.appAlipayPayment = function(jsConfig) {
	return new Promise((resolve, reject) => {
		uni.requestPayment({
			orderInfo: jsConfig,
			provider: 'alipay',
			success: function(res) {
				resolve(res);
			},
			fail: function(e) {
				reject(e);
			},
			complete: function(e) {
				reject(e);
			}
		});
	});
}

function isWeChatEnv() {
    // 判断window对象是否有__wxjs_environment属性，并且其值为'miniprogram'之外的字符串（因为'miniprogram'代表小程序环境）
    // 通常公众号H5页面这个值可能是undefined或者其他非'miniprogram'的字符串
    // 但更稳妥的方式是检查是否存在这个属性以及它是否不等于'miniprogram'
    if (window.__wxjs_environment && window.__wxjs_environment !== 'miniprogram') {
        // 这里可以根据实际情况进一步判断，比如是否等于某个特定的公众号环境标识
        // 但通常只需要知道不是在小程序中即可认为是公众号环境
        return true;
    }
    
    // 还可以检查其他微信环境特有的对象或方法，比如wx对象
    // 但需要注意，wx对象也可能存在于小程序之外的其他微信环境中
    if (typeof wx !== 'undefined' && wx.miniProgram) {
        // 如果wx对象存在且wx.miniProgram也存在，则很可能是在小程序环境中
        // 因此这里取反来判断不是小程序环境，即可能是公众号环境
        // 但这种判断方式不如直接检查__wxjs_environment来得准确
        return !wx.miniProgram.getEnv(); // 注意：这里假设getEnv方法存在且在小程序中返回true
    }
    
    // 如果没有找到任何表明是微信公众号环境的特征，则返回false
    return false;
}

jvue.h5copy = function(text, fn){
	const copyTxt = function(text, fn) { // 复制功能
	  if (typeof document.execCommand !== 'function') {
	    console.log('复制失败，请长按复制')
	    return
	  }
	  var dom = document.createElement('textarea')
	  dom.value = text
	  dom.setAttribute('style', 'display: block;width: 1px;height: 1px;')
	  document.body.appendChild(dom)
	  dom.select()
	  var result = document.execCommand('copy')
	  document.body.removeChild(dom)
	  if (result) {
	    console.log('复制成功')
	    typeof fn === 'function' && fn()
	    return
	  }
	  if (typeof document.createRange !== 'function') {
	    console.log('复制失败，请长按复制')
	    return
	  }
	  var range = document.createRange()
	  var div = document.createElement('div')
	  div.innerhtml = text
	  div.setAttribute('style', 'height: 1px;fontSize: 1px;overflow: hidden;')
	  document.body.appendChild(div)
	  range.selectNode(div)
	  var selection = window.getSelection()
	  console.log(selection)
	  if (selection.rangeCount > 0) {
	    selection.removeAllRanges()
	  }
	  selection.addRange(range)
	  document.execCommand('copy')
	  typeof fn === 'function' && fn()
	  console.log('复制成功')
	}
	
	copyTxt(text,fn);
}

jvue.showModal  = function(title,content,fn){
	var that = this;
	var fixcontent = content.replace(/<br>/g,"\n");
	uni.showModal({
		title: title,
		content: fixcontent,
		success: function (resp) {
			console.log("showModel",resp);
			if (resp.confirm) {
				typeof fn === 'function' && fn();
			}
		}
	})
}

jvue.showMsg = function (title = '', icon = 'none',duration = 2000){
	jvue.appShowToast(title, icon, false, duration);
}
		
jvue.appShowToast = function (title = '', icon = 'none', mask = true, duration = 2000, position = 'center') {
	uni.hideLoading();
	return uni.showToast({
		title: title,
		icon: icon,
		mask: mask,
		duration: duration,
		position: position
	});
}

jvue.copyCenter = function(value,fn) {
	//复制文本内容
	value += '';
	console.log('复制内容~~' + value);
	if(isWeChatEnv()){
		document.execCommand('copy');
		jvue.showMsg("复制成功");
	}
	else{
		//设置系统剪贴板的内容  提示：API `setClipboardData` is not yet implemented  表示当前并不支持H5 此功能
		uni.setClipboardData({
			data: value,
			success: function() {
				console.log('success--' + value);
			}
		});
	}
}

jvue.copyClip =  function(value,fn) {
	return jvue.copyCenter(value,fn);
}
/**
 * 判断文件类型，判断传入的路径是图片还是视频
 * @param {*} fileValue 文件名称
 * @param {*} type 文件类型 video Or image
 */
jvue.checkFile = function(fileValue, type) {
	var index = fileValue.indexOf("."); //（考虑严谨用lastIndexOf(".")得到）得到"."在第几位
	var fileValueSuffix = fileValue.substring(index); //截断"."之前的，得到后缀
	if(type == 'video') {
		if (!/(.*)\.(mp4|rmvb|avi|ts)$/.test(fileValueSuffix)) { //根据后缀，判断是否符合视频格式
			return false;
		}
	}
	if(type == 'image') {
		if (!/(.*)\.(gif|jpg|jpeg|png|GIF|JPG|PNG|image)$/.test(fileValueSuffix)) { //根据后缀，判断是否符合图片格式
			return false;
		}
	}
	return true;
}
			
 /**
 * 图片预览
 */
jvue.imgPreview = function(index, list) {
	const urlList = []
	list.forEach(item => {
		//if (this.checkFile(item.img_url, 'image')) {
			
			urlList.push(item.img_url)
		//}
	})
	uni.previewImage({
		current: index,
		loop:true,
		urls: urlList
	})
}

import { ossUpload } from '@/libs/jason-alioss-upload/oss.js';

jvue.upload_image = function(func,count){
	var that = this;
	if(count==undefined){
		count = 1;
	}
	uni.chooseImage({
		count: count,
		success: async (file) => {
			console.log("file",file);
			let filePath = file.tempFilePaths[0];
			let filename = that.get_suffix(file.tempFiles[0].name); //file.tempFiles[0].path
			const {success,data} = await ossUpload(filePath, filename, 'img/')
			if(success) {				
				func.call(this, event);								
			} else {
				uni.showToast({icon:'none', title: data})
			}
		}
	})
}
export default jvue;